#ifndef __BLENDER_H__
#define __BLENDER_H__

#include <string>
#include <vector>
#include <vw/Mosaic/QuadTreeGenerator.h>
#include <boost/smart_ptr.hpp>

#include "inputimage.h"
using namespace vw;

namespace cshotel {

    struct dz_formatted_image_path {
        std::string operator()( mosaic::QuadTreeGenerator const& qtree, std::string const& name, int32 levels_per_directory = 1 );
    };

    class Blender {
        private:
            std::string mosaic_name;
            std::string file_type;
            int tile_size;
            bool draft;
            bool qtree;

        public:
            //Constructor with default parameters
            Blender(std::string mosaic_name, std::string file_type,
                    unsigned int cache_size=1024, int tile_size=256,
                    bool draft=true, bool qtree=true, bool verbose=true);

            //Blending function
            template <class PixelT>
            void blend(std::vector<boost::shared_ptr<InputImage> > );

    };
}

#endif
